#ifndef BaseGameEntity_h__
#define BaseGameEntity_h__
#include "Logic/Vector2D.h"

class Visual;
enum ENTITYTYPE
{
	ENTITY_ROLE, 
	ENTITY_MOB, 
	ENTITY_ITEM, 
	ENTITY_NPC
};

class BaseGameEntity
{
public:
	BaseGameEntity();
	virtual ~BaseGameEntity();
	BaseGameEntity(ENTITYTYPE type,Visual* pVisual);
	virtual void Update(){};
	void         Render(int delta) const;
	Vector2Di    GetPos();
	void         SetPos(const Vector2Di& new_pos);
	bool         CanDelete();
	void         SetDel(bool del);
	int          GetID();
	int          GetEntityType();
	Visual*      GetVisual() const;

protected:
	//each entity has a unique ID
	int         m_ID;
	Vector2Di   m_cellPos;
	bool        m_canDel;
	ENTITYTYPE m_entityType;

	//this is the next valid ID. Each time a BaseGameEntity is instantiated
	//this value is updated
	static int  m_nextValidID;

	Visual* m_pVisual;
};
#endif // BaseGameEntity_h__